package in.lib.adapter; import in.rob.client.R; import java.util.List; import java.util.Locale; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; public class LocaleArrayAdapter extends ArrayAdapter<Locale> { static class LocaleHolder { TextView name; } private final LayoutInflater mLayoutInflater; private final Context mContext; private final List<Locale> mItems; private final int mLayoutResourceId; public LocaleArrayAdapter(Context context, List<Locale> locales) { super(context, R.layout.spinner_item, locales); mContext = context; mItems = locales; mLayoutResourceId = R.layout.spinner_item; mLayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; LocaleHolder holder = null; if (row == null) { row = mLayoutInflater.inflate(mLayoutResourceId, parent, false); holder = new LocaleHolder(); holder.name = (TextView)row.findViewById(R.id.text1); row.setTag(holder); } else { holder = (LocaleHolder)row.getTag(); } Locale locale = getItem(position); holder.name.setText(locale.getDisplayName()); return row; } @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { return getView(position, convertView, parent); } public String getItemCode(int position) { return getItem(position).toString(); } @Override public int getPosition(Locale item) { String itemCode = item.toString().toLowerCase(); for (int i = 0; i < mItems.size(); i++) { if (getItemCode(i).toLowerCase().equals(itemCode)) { return i; } } return -1; } }